package com.dyna.digit.process.strategy;

import com.dyna.digit.process.domain.form.DigitDeclareForm;
import com.dyna.enums.DigitFlowStatusEnum;

import javax.annotation.PostConstruct;

/**
 * @author zhoucaiwang
 * @date 2023/11/19
 */
public abstract class AbstractFlowHandler {

    @PostConstruct
    public void init() {
        DigitFlowFactory.register(getDigitFlowEnum(), this);
    }

    /**
     * 通过调用抽象类枚举，获取继承在该抽象类下的具体实现类
     * @return 流程枚举
     */
    public abstract DigitFlowStatusEnum getDigitFlowEnum();

    /**
     * 指定流程
     * @return 流程名
     */
    public abstract String flow();

    /**
     * 详情
     * @param projectId 项目id
     * @return Object
     */
    public abstract Object detail(Integer projectId);

    /**
     * 新增
     * @param project 项目数据
     * @return Boolean
     */
    public abstract Boolean add(Object project);

    /**
     * 编辑
     * @param project 项目数据
     * @return Boolean
     */
    public abstract Boolean edit(DigitDeclareForm project);

}
